// post get  注册-> post|get

const express = require('express');
//导入数据库连接配置
const db = require('../db/index')
//创建路由对象
const router = express.Router();
// 密码加密 
// npm i bcryptjs@2.4.3
const bcrypt = require('bcryptjs');
// 导入jwt
const jwt = require('jsonwebtoken')

// 定义一个token解析密钥
const jwtSeccretKey = 'nihao No1. ^-^';

//注册接口
router.post('/reguser', (req, res) => {
    const postUser = req.body;
    if (!postUser.username || !postUser.password) {
        return res.cc('用户名和密码不能为空')
    }
    // 判断数据库是否已经有了这个用户
    const get_sql = 'select * from api_user where username=?';
    db.query(get_sql, postUser.username, (err, getResult) => {
        if (err) return res.cc(err);
        if (getResult.length > 0) return res.cc('注册失败！');
        postUser.password = bcrypt.hashSync(postUser.password, 10);
        const set_sql = 'insert into api_user set ?';
        db.query(set_sql, postUser, (err, result) => {
            if (err) return res.cc(err);
            if (result.affectedRows !== 1) return res.cc('注册失败！')
            res.cc('注册成功', 200)
        })
    })
})

// 登录
router.post('/login', (req, res) => {
    const userInfo = req.body;
    console.log(userInfo);
    if (!userInfo.username || !userInfo.password) {
        return res.cc('用户名或密码不能为空！')
    }
    const get_sql = 'select * from api_user where username=?';
    db.query(get_sql, userInfo.username, (err, getResult) => {

        if (err) return res.cc(err);
        if (getResult.length !== 1) return res.cc('登录失败！')

        // 验证密码
        const pwd = bcrypt.compareSync(userInfo.password, getResult[0].password)
        if (!pwd) return res.cc('登录失败！')
        const user = { id: getResult[0].userid, username: getResult[0].username }
        // 生成token 下载生成token包  npm i jsonwebtoken@8.5.1
        // 生成toekn字符串
        const tokenStr = jwt.sign(user, jwtSeccretKey, {
            expiresIn: '10h'
        })
        res.send({
            status: 200,
            message: '登录成功！',
            data: {
                token: 'Bearer ' + tokenStr
            }
        })
    })
})

// 增加了路由对象共享
module.exports = router
